package NO10_Math;

/**
 * 2025-08-29
 * 力扣 - 50. Pow(x, n)
 * <p>
 * 实现 pow(x, n) ，即计算 x 的整数 n 次幂函数（即，xn ）。
 */
public class MyPowMain {
    public static void main(String[] args) {
        System.out.println(myPow(2.0, 10));
    }

    public static double myPow(double x, int n) {
        // 处理n为负数的情况
        long N = n; // 防止n=-2147483648时取反溢出
        if (N < 0) {
            x = 1 / x;
            N = -N;
        }

        double result = 1.0;
        double current = x;

        // 快速幂算法
        while (N > 0) {
            if (N % 2 == 1) {
                result *= current;
            }
            current *= current; // 平方
            N /= 2;
        }

        return result;
    }
}
